5bdf786604c2c48134b8b58166d4259ed376d191,src/main/java/org/basex/core/DBLocking.java,DBLocking,acquire,#Progress#StringList#StringList#,81

Before Change


            locks.put(object, lock);
          }
        }
        lock.writeLock().lock();
      }
    }

After Change


    int w = 0, r = 0;
    while (r < readObjects.length || w < writeObjects.length) {
      // Look what token comes earlier in alphabet, prefer writing against reading
      if(w < writeObjects.length && (r >= readObjects.length
          || writeObjects[w].compareTo(readObjects[r]) <= 0)) {
        ReentrantReadWriteLock lock;
        synchronized(locks) { // Make sure each object lock is a singleton
          lock = locks.get(writeObjects[w]);
          if(null == lock) { // Create lock if needed
            lock = new ReentrantReadWriteLock();
            locks.put(writeObjects[w], lock);
          }
        }
        lock.writeLock().lock();
        w++; // Set pointer to next token
      } else {
        ReentrantReadWriteLock lock;